package com.tiancheng.trade.settlement.model.settlement;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.tiancheng.trade.settlement.model.base.BaseEntity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;


/**
 * 场景收入成本报表
 *
 * @Desc
 * @Time 2024-05-25 18:14
 * @GeneratedByCodeFactory
 */
@Getter
@Setter
@ToString
@TableName("order_source_cost")
public class OrderSourceCost extends BaseEntity implements java.io.Serializable {

    /**
     * 业务场景
     */
    @NotNull
    private String orderSource;

    /**
     * 结算周期
     */
    @NotNull
    private String verifiedTime;

    /**
     * 城市
     */
    @NotNull
    private String cityName;

    /**
     * 机构名称
     */
    @NotNull
    private String organizationName;

    /**
     * 商户编号
     */
    @NotNull
    private String merchantCode;

    /**
     * 商户名称
     */
    @NotNull
    private String merchantName;

    /**
     * 合作模式(1:清分 2:结算)
     */
    @NotNull
    private String settlementType;

    /**
     * 产品编码
     */
    @NotNull
    private String productCode;

    /**
     * 产品名称
     */
    @NotNull
    private String productName;

    /**
     * 发票类型(1:增值税专用发票 2:增值税普通发票)
     */
    @NotNull
    private String invoiceType;

    /**
     * 销售价格
     */
    private Integer sellPrice;

    /**
     * 销售价格
     */
    @TableField(exist = false)
    private String sellPriceStr;

    /**
     * 手续费
     */
    private Integer processCost;

    /**
     * 手续费
     */
    @TableField(exist = false)
    private String processCostStr;

    /**
     * 结算价格
     */
    private Integer costPrice;

    /**
     * 结算价格
     */
    @TableField(exist = false)
    private String costPriceStr;

    /**
     * 税率
     */
    private BigDecimal taxRate;

    /**
     * 平台服务费
     */
    private Integer platService;

    /**
     * 平台服务费
     */
    @TableField(exist = false)
    private String platServiceStr;

    /**
     * 不含税成本
     */
    private Integer noTaxCost;

    /**
     * 不含税成本
     */
    @TableField(exist = false)
    private String noTaxCostStr;

    /**
     * 税额
     */
    private Integer taxAmount;

    /**
     * 税额
     */
    @TableField(exist = false)
    private String taxAmountStr;

    @JsonProperty("contract_start_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate contractStartDate;               // 合同起始时间

    @JsonProperty("contract_end_date")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate contractEndDate;               // 合同终止时间

}